<?xml version="1.0" encoding="utf-8" ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="ACECF">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="DetalleAprobacionComercial" maxOccurs="1">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="Version" type="versionType" minOccurs="1"  maxOccurs="1"/>
              <xs:element name="RNCEmisor" type="RNCValidation" minOccurs="1" maxOccurs="1"/>
              <xs:element name="eNCF" type="AlfaNum11Validation" minOccurs="1" maxOccurs="1"/>
              <xs:element name="FechaEmision" type="DateValidation" minOccurs="1" maxOccurs="1"/>
              <xs:element name="MontoTotal" type="Decimal18D2Validation" minOccurs="1"  maxOccurs="1"/>
              <xs:element name="RNCComprador" type="RNCValidation" minOccurs="1" maxOccurs="1"/>
              <xs:element name="Estado" type="EstadoType" minOccurs="1" maxOccurs="1"/>
              <xs:element name="DetalleMotivoRechazo" type="AlfaNum250Validation" minOccurs="0" maxOccurs="1"/>
              <xs:element name="FechaHoraAprobacionComercial" type="DateAndTimeValidation" minOccurs="1" maxOccurs="1"/>
            </xs:sequence>
          </xs:complexType>
        </xs:element> 
        <xs:any minOccurs="0" maxOccurs="1" processContents="skip" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <!-- Definiciones de Tipos de datos -->

  <xs:simpleType name="versionType">
    <xs:restriction base="xs:string">
      <xs:enumeration value="1.0"/>
    </xs:restriction>
  </xs:simpleType>

 
  <xs:simpleType name="EstadoRechazoType">
    <xs:restriction base="xs:integer" >
      <xs:enumeration value="0"/>
      <xs:enumeration value="1"/>
      <xs:enumeration value="2"/>
      <xs:enumeration value="3"/>
      <xs:enumeration value="4"/>
    </xs:restriction>
  </xs:simpleType>
  
  <xs:simpleType name="EstadoType">
    <xs:restriction base="xs:integer" >
      <xs:enumeration value="1"/> <!-- e-CF Aceptado -->
      <xs:enumeration value="2"/>  <!-- e-CF Rechazado -->
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="AlfaNum250Validation">
    <xs:restriction base="xs:string" >
      <xs:maxLength value="250"/>
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="AlfaNum11Validation">
    <xs:restriction base="xs:string" >
      <xs:pattern value="([a-z0-9A-Z]{13,13})|([a-z0-9A-Z]{11,11})|([a-z0-9A-Z]{9,9})"></xs:pattern>
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="RNCValidation">
    <xs:restriction base="xs:integer" >
      <xs:pattern value="(\d{11,11})|(\d{9,9})"></xs:pattern>
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="DateValidation">
    <xs:restriction base="xs:string">
      <xs:pattern value="(3[01]|[12][0-9]|0?[1-9])\-(1[012]|0?[1-9])\-((?:20|20)\d{2})"></xs:pattern>
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="DateAndTimeValidation">
    <xs:restriction base="xs:string">
      <xs:pattern value="(3[01]|[12][0-9]|0[1-9])-(1[0-2]|0[1-9])-[0-9]{4} (2[0-3]|[01]?[0-9]):([0-5]?[0-9]):([0-5]?[0-9])"></xs:pattern>
    </xs:restriction>
  </xs:simpleType>
  
  <xs:simpleType name="Decimal18D2Validation">
    <xs:restriction base="xs:decimal" >
      <xs:pattern value='[0-9]+(\.[0-9]{2})'/>
      <xs:totalDigits value="18"></xs:totalDigits>
      <xs:fractionDigits value="2"></xs:fractionDigits>
    </xs:restriction>
  </xs:simpleType>
</xs:schema> 